//package com.ling.simul.utils;
//
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import lombok.extern.slf4j.Slf4j;
//import org.bson.types.ObjectId;
//import org.springframework.data.domain.Sort;
//import org.springframework.data.mongodb.core.aggregation.Aggregation;
//import org.springframework.data.mongodb.core.aggregation.AggregationOperation;
//import org.springframework.data.mongodb.core.query.Criteria;
//import org.springframework.data.mongodb.core.query.Update;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//
///**
// * Created with IntelliJ IDEA.
// *
// * @Author: xibing
// * @Date: 2024/05/13
// * @Description: 工具类
// */
//@Slf4j
//public class DataUtils {
//    /**
//     * 查询里的prject字段展示
//     * @param dataJsonArray
//     * @return
//     */
//    public static AggregationOperation selectProject(JSONArray dataJsonArray){
//        // 封装数据集合
//        List<String> list = new ArrayList<>();
//        // 遍历参数
//        for (int i = 0; i < dataJsonArray.size(); i++) {
//            // 获取单条记录
//            JSONObject dataJsonObject = dataJsonArray.getJSONObject(i);
//            // 获取document
//            String document = dataJsonObject.getString("document");
//            // 获取content集合
//            JSONArray contentJsonArray = dataJsonObject.getJSONArray("content");
//            // 遍历是否有数据
//            if (contentJsonArray != null && !contentJsonArray.isEmpty()) {
//                // 循环数据
//                for (int j = 0; j < contentJsonArray.size(); j++) {
//                    // 获取内层数据
//                    String content = contentJsonArray.getString(j);
//                    // 添加数据
//                    list.add(document + "." + content);
//                }
//            }else {
//                // 如果为空,只添加外层
//                list.add(document);
//            }
//        }
//        // 返回数据
//        return Aggregation.project(list.toArray(new String[list.size()]));
//    }
//
//    /**
//     * 查询里的sort排序
//     * @param sortJsonObject
//     * @return
//     */
//    public static AggregationOperation selectSort(JSONObject sortJsonObject) {
//        // 获取外层
//        String document = sortJsonObject.getString("document");
//        // 获取排序的值
//        String name = sortJsonObject.getString("name");
//        // 获取排序规则
//        String value = sortJsonObject.getString("value");
//        // 定义路径
//        String path =  document + "." + name;
//        // 排序规则
//        return "ASC".equalsIgnoreCase(value) ? Aggregation.sort(Sort.by(Sort.Direction.ASC, path)) : Aggregation.sort(Sort.by(Sort.Direction.DESC, path));
//    }
//
//    /**
//     * match过滤
//     * @param filtersJsonArray
//     * @return
//     */
//    public static Criteria criteria(JSONArray filtersJsonArray){
//        // 创建一个空的Criteria对象来逐步添加条件
//        Criteria criteria = new Criteria();
//        // 遍历集合
//        for (int i = 0; i < filtersJsonArray.size(); i++) {
//            // 单个集合
//            JSONObject filterJsonObject = filtersJsonArray.getJSONObject(i);
//            // 获取字段值
//            String document = filterJsonObject.getString("document");
//            String content = filterJsonObject.getString("content");
//            String option = filterJsonObject.getString("option");
//            Object value = filterJsonObject.get("value");
//            // 路径定义
//            String path = "_id".equals(document) && "".equals(content) ? document : document + "." + content;
//            if ("$eq".equals(option) && "_id".equals(document) && "".equals(content)) {
//                ObjectId objectId = new ObjectId(String.valueOf(value));
//                criteria.and(path).is(objectId);
//            } else if ("$eq".equals(option) && !"_id".equals(document) && !"".equals(content)) {
//                criteria.and(path).is(value);
//            }
//        }
//        return criteria;
//    }
//
//
//    /**
//     * @Author: xxxb
//     * @Description: 更新
//     */
//    public static Update update(JSONArray dataJsonArray){
//        // 定义update
//        Update update = new Update();
//        // 遍历数据
//        for (int i = 0; i < dataJsonArray.size(); i++) {
//            // 获取具体内容
//            JSONObject dataJsonObject = dataJsonArray.getJSONObject(i);
//            // 获取document
//            String document = dataJsonObject.getString("document");
//            // 获取content
//            JSONObject contentJsonObject = dataJsonObject.getJSONObject("content");
//            // 遍历content
//            for (Map.Entry<String, Object> stringObjectEntry : contentJsonObject.entrySet()) {
//                // 获取key
//                String key = stringObjectEntry.getKey();
//                // 组装路径
//                key = document + "." + key;
//                // 获取需要修改的内容
//                Object value = stringObjectEntry.getValue();
//                // 设置条件
//                update.set(key, value);
//            }
//        }
//        return update;
//    }
//}
